package com.smarkparking.service;

import com.smarkparking.pojo.Order;

import java.util.List;
import java.util.Map;

/**
 * @author 刘涛
 * @create 2021/11/19 15:28
 */
public interface OrderService {
    /**
     * 根据用户账号和停车位id生成订单
     *
     * @param id    停车位id
     * @param email 用户账号
     * @return 是否创建成功
     */
    public boolean addOrder(Integer id, String email);

    /**
     * 查看已完成的订单
     *
     * @return 订单
     */
    public List<Order> findCompleteOrder(String email);

    /**
     * 查看未完成的订单
     *
     * @return 订单
     */
    public List<Order> findNoCompleteOrder(String email);

    /**
     * 查看所有订单
     * @return 订单
     */
    public List<Order> findAllOrder();

    /**
     * 订单出库
     *
     * @param id 订单id
     */
    public void outParking(Long id);

    /**
     * 订单支付
     * @param id 支付的订单id
     * @return 是否支付成功
     */
    public boolean pay(Long id);

    /**
     * 订单删除
     * @param id 需要删除的id
     */
    public void deleteOrder(Long id);


    /**
     * 更新订单
     * @param id 订单id
     * @param name 单主姓名
     * @param parkingSpaceNumber 订单停车场编号
     * @param licensePlateNumber 订单车牌号
     * @param orderPrice 订单价格
     * @param orderState 订单状态 (0未支付，1已支付)
     * @return
     */
    public boolean updateOrder(Long id,String name,String parkingSpaceNumber,String licensePlateNumber,Double orderPrice,Integer orderState);

    /**
     * 根据id查找订单
     * @param id 订单id
     * @return 订单
     */
    public Order findOrderById(Long id);

    /**
     * 订单支付成功后的回调方法
     * @param data
     */
    void handleNotify(Map<String, String> data);

    /**
     * 判断订单是否已支付
     * @param id 订单id
     * @return 是否已支付
     */
    public boolean payState(Long id);
}
